【Linux基础】shell运行原理+权限[内附大量实操截图] 您所在的位置:网站首页 linux 执行shell 不允许的操作 【Linux基础】shell运行原理+权限[内附大量实操截图]

【Linux基础】shell运行原理+权限[内附大量实操截图]

2024-07-03 11:35| 来源: 网络整理| 查看: 265

目录

一、shell命令及其运行原理

shell运行原理 —— 外壳程序

二、权限

1、权限访问者的分类

 2、对角色和文件的操作

1) 文件类型

2)基本权限

 3)文件访问者及其权限的分类

①文件访问者

②不同访问者的权限

③文件访问权限的相关设置方法 

a)chmod

 b)八进制方案

④更改文件的拥有者和所属组

3、目录权限 

4、粘滞位

三、权限总结

一、shell命令及其运行原理

Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?

那为什么不能直接使用kernel?

1、人不善于使用操作系统。

2、如果让人直接访问操作系统:

     a、操作的成本会非常高,因为不是所有的人都是程序员,而且程序员也不一定了解操作系统;

     b、人会犯错,会带来不安全的因素。

所以系统设计者不会让人直接操作 操作系统!

shell运行原理 —— 外壳程序

外壳程序的意义:

1、是用户和操作系统交互中间软件层。

2、可以在一定程度上,起到保护操作系统的作用。

从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)

主要包含: 将使用者的命令翻译给核心(kernel)处理。

                    同时,将核心的处理结果翻译给使用者。

二、权限 1、权限访问者的分类

Linux下有两种用户:超级用户(root)、普通用户。

超级用户:只有一个,具有Linux下的最高权限。可以再linux系统下做任何事情,不受限制。

普通用户:可以有多个,在linux下做有限的事情。

超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

root < -- 切换 -- > 普通用户

命令:su [用户名]

功能:切换用户。

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

 2、对角色和文件的操作

1) 文件类型

d:目录

-:普通文件

l:软链接(类似Windows的快捷方式)

b:块设备文件(例如硬盘、光驱等)

p:管道文件

c:字符设备文件(例如屏幕等串口设备)

s:套接口文件

2)基本权限

i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限 iv.“—”表示不具有该项权限

 3)文件访问者及其权限的分类 ①文件访问者

在文件下,角色权限身份一共有三种:拥有者(uesr) ,所属组(group) ,其他人(other)。

拥有者:文件属于谁;

所属组:文件属于哪一个组;

other:不属于上面两种中的任何一种,就是other;

②不同访问者的权限

③文件访问权限的相关设置方法  a)chmod

功能:设置文件的访问权限

格式:chmod [参数] 权限 文件名

常用选项: R -> 递归修改目录文件的权限

说明:只有文件的拥有者和root才可以改变文件的权限

用户表示符+/-=

权限字符 +:向权限范围增加权限代号所表示的权限

-:向权限范围取消权限代号所表示的权限

=:向权限范围赋予权限代号所表示的权限

用户符号:  

u:拥有者

g:拥有者同组用

o:其它用户

a:所有用户

 b)八进制方案

④更改文件的拥有者和所属组

a)chown

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名

b)chgrp

功能:修改文件或目录的所属组

格式:chgrp [参数] 用户组名 文件名

常用选项:-R 递归修改文件或目录的所属组

实例:

3、目录权限 

目录的起始权限是777,普通文件的起始权限是666.

但是我们可以看到在实际操作过程中并不是这样的,这是因为什么原因呢?原因就是创建文件或目录的时候还要受到 umask 的影响。假设默认权限是mask,则实际创建的出来的文件权限是:

mask & (~umask)

umask

格式:umask 权限值

功能: 查看或修改文件掩码

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用 户默认为0002

凡是在umask中出现的权限,不会在最终的文件权限中出现!

   

 可以看到root和普通用户下目录和普通文件的最终权限是不一样的。那是怎么计算的呢?

    root(目录)  root(普通文件)普通用户(目录)普通用户(普通文件)

起始权限:

  7     7    7

111 111 111

起始权限

  6     6     6

110 110 110

起始权限:

  7     7    7

111 111 111

起始权限

  6     6     6

110 110 110

umask:

   0     2      2

000 010 010

umask:

   0     2      2

000 010  010

umask:

  0     0     2

000 000 010

umask:

  0     0     2

000 000 010

~umask:111 101 101

mask & (~umask):

111 101 101

 7      5      5

~umask:111 101 101

mask & (~umask):

110 100 100

 6      4     4

~umask:111 111 101

mask & (~umask):

111 111 101

 7      7     5

~umask:111 111 101

mask & (~umask):

110 110 100

 6      6     4

  

   

当然 umask也是可以修改的。

4、粘滞位

粘滞位发生前提:所有用户在一个共同的路径下,对该目录具有读写执行权限。

我们会发现这样的一个问题,按照之前的设定当一个文件的拥有者和所属组都是我时,其他人不能对该文件进行操作。但是我们发现处在同一路径下的其他人可以直接删除掉我的文件,这是怎么回事呢?这种情况该怎么解决呢?

我们在根目录下建立一个mytmp 目录来帮助我们理解。

 因为一个文件是否被删除,根本就不是这个文件本身的属性,而是关于这个文件所在的目录是否具有写权限。

那这样可能会想到可以把目录 other 的“写(w)”权限去掉就可以了,事实真的是这样吗?

我们发现确实不能删除别人的文件了,连自己的文件也不可以删除了,简直是伤敌一千,自损八百。 

所以,我们需要找到一个解决方法,要满足:

1)当多个用户共享一个目录,需要在该目录下进行读写,创建删除文件。

2)但是只能删除自己的,而不能删除别人的。

解决方法就是给目录 chmod +t  目录名 

注意事项:

1)粘滞位只能给目录设置。

 2)一般是谁设置谁取消。 

三、权限总结 目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有